package club.service;

import club.pojo.User;
import com.github.pagehelper.PageInfo;
import java.util.List;

/**
 * 用户服务接口
 * 定义了用户管理相关的业务操作方法
 */
public interface UserService {

    /**
     * 根据用户名和状态查询用户列表
     * @param userName 用户名（模糊匹配）
     * @param state 用户状态（可选，如0-正常，1-禁用）
     * @return 符合条件的用户列表
     */
    List<User> findByName(String userName, Integer state);

    /**
     * 根据用户名模糊查询用户列表（简化版）
     * @param userName 用户名（模糊匹配）
     * @return 符合条件的用户列表
     */
    List<User> showName(String userName);

    /**
     * 用户登录验证
     * @param userName 用户名
     * @param password 密码
     * @return 验证成功返回用户对象，失败返回null
     */
    User loginuser(String userName, String password);

    /**
     * 用户注册
     * @param user 用户对象（需包含用户名、密码等必填字段）
     * @return 插入成功返回1，失败返回0
     */
    int add(User user);

    /**
     * 更新用户信息
     * @param user 包含更新字段的用户对象（需包含ID）
     * @return 更新成功返回1，失败返回0
     */
    Integer update(User user);

    /**
     * 根据ID查询用户
     * @param id 用户ID
     * @return 用户对象，不存在则返回null
     */
    User findById(Integer id);

    /**
     * 分页查询用户列表（支持按用户名模糊搜索）
     * @param userName 用户名（模糊匹配）
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 分页结果对象，包含用户列表及分页信息
     */
    PageInfo<User> allUser(String userName, Integer pageNum, Integer pageSize);

    /**
     * 根据ID删除用户
     * @param id 用户ID
     * @return 删除成功返回1，失败返回0
     */
    int del(Integer id);
}